1. Field of the Invention
The present invention is related to embedded computer systems, and more particularly to a system and method for booting embedded systems using removable storage.
2. Background Information
Embedded systems range from low-end systems such as networked sensors and smart cards to high-end systems such as routers, storage servers and web servers. Embedded devices typically boot from a flash, ROM or EPROM over a serial or parallel bus interface. Typically the type of boot is configured from within the chip as part of its setup. Among other things, this boot system will usually perform initial diagnostic tests, discover and initialize the hardware system and load the application program.
Today, on an embedded system, software is typically loaded on flash memory. The flash memory is tightly coupled to the system bus. This is done because the processor only knows to get its boot information from interfaces defined within the chip. In order to get the boot code into the flash, the chip must by programmed ahead of time using a programmer or new code must be loaded using a debugger interface. The flash may also be downloaded by other code currently running, but this then requires a reboot.
To date, embedded systems have had limited access to external memory. One reason for limiting access to external memory was to reduce cost. Another reason was to limit the opportunities to compromise the embedded device. Such limits have their cost. For instance, it can be difficult to swap in a new software system on an embedded device. And it can be difficult to recover a embedded system that has been disabled by an error, or by compromised code.
What is needed is a system and method for addressing these issues and others that will become apparent in reading the following disclosure.